/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package nexus.adec;

import nexus.adec.recursos.SelectFuncionItem;
import control.*;
import java.util.ArrayList;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.el.VariableResolver;
import javax.faces.event.ActionEvent;
import javax.swing.JOptionPane;
import nexus.criterios.ConfiguracionCriterio;

/**
 *
 * @author juampi
 */
public class MenuLateralFunciones {

    private String saludo;
    private ArrayList<EspacioCurso> cursos;
    private Usuario user;
    private boolean verMiImagen;
    private boolean verImagenDocente;
    private boolean verAvisos;
    private boolean verSaludo;
    private boolean verCalendario;
    private boolean verMenu;
    private boolean mostrarFunciones;
    private ArrayList<SelectFuncionItem> funcionesEspacio;

    public MenuLateralFunciones() {
        getUser();
        FacesContext facesContext = FacesContext.getCurrentInstance();
        VariableResolver vr = facesContext.getApplication().getVariableResolver();
        UserBean u = (UserBean)vr.resolveVariable(facesContext, "userBean");
        try{
           EspacioCurso c=GestorEspacioDB.getInstance().obtenerCurso(u.getCodigoCurso(), user.getNombreUsuario());
        }catch(Exception e){}
        saludo="";
    }
    public String getSaludo() {
        /*  FacesContext facesContext = FacesContext.getCurrentInstance();
            VariableResolver vr = facesContext.getApplication().getVariableResolver();
            UserBean u = (UserBean)vr.resolveVariable(facesContext, "userBean");
            EspacioCurso curso = GestorEspacioDB.getInstance().obtenerCurso(u.getCodigoCurso(), u.getId());
            saludo = "Bienvenido "+user.getNombreCompleto()+" al espacio "+curso.getNombreEspacio();
        */
        saludo="";
        return saludo;
    }

    public void setSaludo(String saludo) {

        this.saludo = saludo;
    }

    /**
     * @return the cursos
     */
    public ArrayList<EspacioCurso> getCursos() {
        getUser();
        //cursos = new ArrayList<NavigationMenuItem>();
        ArrayList<EspacioCurso> cs = GestorEspacioDB.getInstance().listarCursos(user.getNombreUsuario());
        //JOptionPane.showMessageDialog(null,"el nombre de usuario -"+user.getNombreUsuario()+"- "+cs.size());
        //for (Curso curso : cs) {
          //  NavigationMenuItem item = new NavigationMenuItem(curso.getNombreEspacio(),"irAEspacio");
           // item.setValue(curso.getCodigoEspacio());
            //NavigationMenuItem item = new NavigationMenuItem(curso.getCodigoEspacio(), curso.getNombreEspacio(),"Te lleva al espacio", false, "#{otroBean.action}","",false);
            //item.setActionListener("#{espacioBean.guardarCodigo}");
            //cursos.add(item);
        //}
        //JOptionPane.showMessageDialog(null, " creo corectamente los cursos");
        return cs;
    }
    public void guardarCodigo(ActionEvent event){
        
        FacesContext context = FacesContext.getCurrentInstance();
        VariableResolver vr = context.getApplication().getVariableResolver();
        ConfiguracionCriterio cc = (ConfiguracionCriterio)vr.resolveVariable(context, "configuracionCriterios");
        cc.setNodoActual(null);
        
        cc.borrarTodosMostrar();
        FacesContext facesContext = FacesContext.getCurrentInstance();
        VariableResolver vr2 = facesContext.getApplication().getVariableResolver();
        UserBean u = (UserBean)vr2.resolveVariable(facesContext, "userBean");
        //JOptionPane.showMessageDialog(null,"es un objeto "+event.getSource().getClass());
        UIParameter component = (UIParameter) event.getComponent().findComponent("codigoEspacio");
        //JOptionPane.showMessageDialog(null,"este es el codigo "+nmi.getValue().toString());
        String codigoEspacio = component.getValue().toString();
        u.setCodigoCurso(codigoEspacio);
    }
    /**
     * @return the user
     */
    public void getUser() {
        try {
                FacesContext facesContext = FacesContext.getCurrentInstance();
                VariableResolver vr = facesContext.getApplication().getVariableResolver();
                UserBean u = (UserBean)vr.resolveVariable(facesContext, "userBean");
                user = GestorEspacioDB.getInstance().obtenerUsuario(u.getId());
        }catch(Exception e) {
            JOptionPane.showMessageDialog(null,"ha ocurrido un erro al obtener el usuario en Espacio Bean");
        }

    }
    
    /**
     * @return the avisosEspacio
     */
    public ArrayList getAvisosEspacio() {

        return null;
    }

    /**
     * @param avisosEspacio the avisosEspacio to set
     */
    public void setAvisosEspacio(ArrayList avisosEspacio) {
        
    }

    /**
     * @return the verMiImagen
     */
    public boolean isVerMiImagen() {
        return verMiImagen;
    }

    /**
     * @param verMiImagen the verMiImagen to set
     */
    public void setVerMiImagen(boolean verMiImagen) {

        this.verMiImagen = verMiImagen;
    }

    /**
     * @return the verImagenDocente
     */
    public boolean isVerImagenDocente() {
        return verImagenDocente;
    }

    /**
     * @param verImagenDocente the verImagenDocente to set
     */
    public void setVerImagenDocente(boolean verImagenDocente) {
        this.verImagenDocente = verImagenDocente;
    }

    /**
     * @return the verAvisos
     */
    public boolean isVerAvisos() {

        return verAvisos;
    }

    /**
     * @param verAvisos the verAvisos to set
     */
    public void setVerAvisos(boolean verAvisos) {
        this.verAvisos = verAvisos;
    }

    /**
     * @return the verSaludo
     */
    public boolean isVerSaludo() {

        return verSaludo;
    }

    /**
     * @param verSaludo the verSaludo to set
     */
    public void setVerSaludo(boolean verSaludo) {
        this.verSaludo = verSaludo;
    }

    /**
     * @return the verCalendario
     */
    public boolean isVerCalendario() {

        return verCalendario;
    }

    /**
     * @param verCalendario the verCalendario to set
     */
    public void setVerCalendario(boolean verCalendario) {
        this.verCalendario = verCalendario;
    }

    /**
     * @return the verMenu
     */
    public boolean isVerMenu() {
        return verMenu;
    }

    /**
     * @param verMenu the verMenu to set
     */
    public void setVerMenu(boolean verMenu) {
        this.verMenu = verMenu;
    }

    /**
     * @return the mostrarFunciones
     */
    public boolean isMostrarFunciones() {
        //JOptionPane.showMessageDialog(null,"entro aqui "+mostrarFunciones);
        return mostrarFunciones;
    }

    /**
     * @return the funcionesEspacio
     */
    public ArrayList<SelectFuncionItem> getFuncionesEspacio() {
        funcionesEspacio = new ArrayList<SelectFuncionItem>();
        ArrayList<Funcion> funs = GestorEspacioDB.getInstance().listarFuncionesUsuario(getUserBean().getCodigoCurso(), user.getNombreUsuario());
        for (Funcion funcion : funs) {
            SelectFuncionItem fb = new SelectFuncionItem(funcion);
            funcionesEspacio.add(fb);
        }
        return funcionesEspacio;
    }
    public ArrayList<Categoria> getCategorias(){
        ArrayList<Categoria> cat=GestorEspacioDB.getInstance().listarFuncionesCategoria(user.getNombreUsuario(),getUserBean().getCodigoCurso() );
        return cat;
    }

    /**
     * @param funcionesEspacio the funcionesEspacio to set
     */
    public void setFuncionesEspacio(ArrayList<SelectFuncionItem> funcionesEspacio) {
        this.funcionesEspacio = funcionesEspacio;
    }

    /**
     * @param mostrarFunciones the mostrarFunciones to set
     */
    public void setMostrarFunciones(boolean mostrarFunciones) {
        this.mostrarFunciones = mostrarFunciones;
    }
    public UserBean getUserBean() {
        FacesContext context = FacesContext.getCurrentInstance();
        VariableResolver vr = context.getApplication().getVariableResolver();
        UserBean res = (UserBean)vr.resolveVariable(context,"userBean");
        return res;
    }
}
